Um despertar gráfico-tabular de Star Wars
Que o dplyr, o ggplot2 e os tibbles estejam com você durante essa jornada!
0) Introdução
Seja bem-vindo ao universo dos Jedis visualizadores de dados (espero que você não seja um Sith infiltrado).
Nessa pequena jornada algumas perguntas serão respondidas a partir de uma minuciosa análise dos dados disponibilizados por uma pesquisa de opinião realizada com 1186 pessoas sobre a tão amada franquia Star Wars!
Uma pequena observação antes de começarmos: iremos supor que essa amostra é representativa (suposição ousada, não? … O que?! … Não acha?!!! Então quero na minha mesa a variância dos estimadores das variáveis de interesse… e é melhor que ela seja mínima!!! Caso contrário… conhecerás de fato o que é o lado negro da força, pois vamos te mandar pra lá!!).
Brincadeiras à parte, as perguntas você pode conferir à esquerda, no sumário deste relatório. Ao clicar nelas, você será redirecionado diretamente para a seção referida. Além disso, você pode visualizar os códigos utilizados para a criação de cada gráfico e tabela acionando os diversos botões “Code” disponibilizados ao longo do arquivo.
Vamos começar?! Próximo planeta, Millennium Falcon… ops, digo, próxima seção, RMarkDown!!!
setwd("C:/Users/marco/OneDrive/Documents/Portfolio/star_wars_analytics") #alterar para o seu diretório com os arquivos salvos
base <- read.csv2("SW.csv") %>% as_tibble1) A franquia Star Wars foi mais assistida por qual gênero?
freq.gen <- base %>%
filter(V2 == 'Yes') %>%
filter(V34 != '') %>%
group_by(Gênero = V34) %>%
summarise(Frequência = V34 %>% table %>% as.vector) %>%
mutate(Percentual = Frequência %>% prop.table %>% multiply_by(100) %>% round(.,1)) %>%
mutate(Gênero = c('Feminino','Masculino'))
resposta.1 <- freq.gen %>%
filter(Frequência==max(Frequência)) %>%
pull(Gênero)
kable(freq.gen,caption = "Audiência por Gênero")| Gênero | Frequência | Percentual |
|---|---|---|
| Feminino | 397 | 48.4 |
| Masculino | 423 | 51.6 |
ggplot(freq.gen, aes(x="",y=Frequência, fill=Gênero)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y",start=0) +
theme_minimal()+
theme(axis.title.x = element_blank(),
axis.title.y = element_blank(),
panel.border = element_blank(),
axis.ticks = element_blank(),
plot.title=element_text(size=14, face="bold")
) +
geom_text(aes(y = Frequência+c(820/4,-820/4),
label = percent(Frequência/sum(Frequência),accuracy = 0.1)), size=5)Conforme a tabela e o gráfico mostram, o gênero Masculino é o que responde à primeira pergunta. Entretanto, o gênero feminino não está muito longe na audiência, fato que demonstra boa popularidade da franquia entre as mulheres.
Cabe observar que, para a obtenção destes dados, foi realizada a filtragem na variável V2 (“Você já assistiu algum filme da franquia Star Wars?”), considerando apenas as respostas positivas (“Yes”).
Além disso, as respostas em branco para a variável V34 (“Gênero”) foram desconsideradas na análise.
2) Com relação à faixa etária:
2.1) Qual foi a mais entrevistada por gênero?
base.2.1 <- base %>%
filter(V34!="") %>%
group_by(Gênero = V34,`Faixa Etária` = V35) %>%
summarise(Frequência = V35 %>% table %>% as.vector) %>%
suppressMessages %>%
mutate(Percentual = Frequência %>% divide_by(Frequência %>% sum(.,na.rm=T)) %>% multiply_by(100) %>% round(.,1)) %>%
ungroup %>%
mutate(`Faixa Etária` = rep(c('Mais de 60 anos','Entre 18 e 29 anos','Entre 30 e 44 anos','Entre 45 e 60 anos'),2)) %>%
arrange(Gênero,`Faixa Etária`)
resposta.2.1 <- base.2.1 %>%
filter(Percentual==max(Percentual)) %>%
select(`Faixa Etária`) %>%
pull %>%
substr(.,2,100) %>%
paste0('para os dois gêneros, a faixa etária mais entrevistada foi a de indivíduos com idade e',.)
kable(base.2.1,caption = "Quantidade de entrevistados por Gênero e Faixa Etária")| Gênero | Faixa Etária | Frequência | Percentual |
|---|---|---|---|
| Female | Entre 18 e 29 anos | 114 | 20.8 |
| Female | Entre 30 e 44 anos | 136 | 24.8 |
| Female | Entre 45 e 60 anos | 151 | 27.5 |
| Female | Mais de 60 anos | 148 | 27.0 |
| Male | Entre 18 e 29 anos | 104 | 20.9 |
| Male | Entre 30 e 44 anos | 132 | 26.6 |
| Male | Entre 45 e 60 anos | 140 | 28.2 |
| Male | Mais de 60 anos | 121 | 24.3 |
#feminino - gráfico
ggplot(filter(base.2.1,Gênero=="Female"),aes(x=`Faixa Etária`,y=Frequência,fill=`Faixa Etária`)) +
geom_bar(stat="identity") +
theme_minimal() +
theme(axis.text.x = element_blank())+
ggtitle("Gênero Feminino") +
scale_fill_brewer(palette = "Reds") #masculino - gráfico
ggplot(filter(base.2.1,Gênero=="Male"),aes(x=`Faixa Etária`,y=Frequência,fill=`Faixa Etária`)) +
geom_bar(stat="identity") +
theme_minimal() +
theme(axis.text.x = element_blank())+
ggtitle("Gênero Masculino") +
scale_fill_brewer(palette = "Blues") De acordo com a tabela e com os gráficos apresentados, para os dois gêneros, a faixa etária mais entrevistada foi a de indivíduos com idade entre 45 e 60 anos.
Tal resultado reflete a antiguidade da franquia que, apesar de possuir filmes mais recentes (talvez para cativar um público mais jovem), estreou em 1977 com “Uma nova esperança”.
2.2) Qual foi a que mais assistiu pelo menos um filme da franquia por gênero?
base.2.2 <- base %>%
mutate(`Quantos Filmes Assistiu` = rowSums(select(.,matches(paste0('V',4:9))),na.rm=T)) %>%
filter(`Quantos Filmes Assistiu` >= 1, V34 != '') %>%
group_by(Gênero = V34, `Faixa Etária` = V35) %>%
summarise(Frequência = V35 %>% table %>% as.vector) %>%
suppressMessages %>%
mutate(Percentual = Frequência %>% divide_by(Frequência %>% sum(.,na.rm=T)) %>% multiply_by(100) %>% round(.,1)) %>%
ungroup %>%
mutate(`Faixa Etária` = rep(c('Mais de 60 anos','Entre 18 e 29 anos','Entre 30 e 44 anos','Entre 45 e 60 anos'),2)) %>%
arrange(Gênero,`Faixa Etária`)
resposta.2.2 <- base.2.2 %>%
filter(Percentual==max(Percentual)) %>%
select(`Faixa Etária`) %>%
pull %>%
substr(.,2,100) %>%
paste0('para os dois gêneros, a faixa etária que mais assistiu pelo menos um filme da franquia foi, novamente, a de indivíduos com idade e',.)
kable(base.2.2,caption = "Quantidade de indivíduos que assistiram pelo menos um filme da franquia por Gênero e Faixa Etária")| Gênero | Faixa Etária | Frequência | Percentual |
|---|---|---|---|
| Female | Entre 18 e 29 anos | 85 | 21.4 |
| Female | Entre 30 e 44 anos | 93 | 23.4 |
| Female | Entre 45 e 60 anos | 120 | 30.2 |
| Female | Mais de 60 anos | 99 | 24.9 |
| Male | Entre 18 e 29 anos | 95 | 22.5 |
| Male | Entre 30 e 44 anos | 114 | 27.0 |
| Male | Entre 45 e 60 anos | 120 | 28.4 |
| Male | Mais de 60 anos | 93 | 22.0 |
#feminino - gráfico
ggplot(filter(base.2.2,Gênero=="Female"),aes(x=`Faixa Etária`,y=Frequência,fill=`Faixa Etária`)) +
geom_bar(stat="identity") +
theme_minimal() +
theme(axis.text.x = element_blank())+
ggtitle("Gênero Feminino") +
scale_fill_brewer(palette = "Reds") #masculino - gráfico
ggplot(filter(base.2.2,Gênero=="Male"),aes(x=`Faixa Etária`,y=Frequência,fill=`Faixa Etária`)) +
geom_bar(stat="identity") +
theme_minimal() +
theme(axis.text.x = element_blank())+
ggtitle("Gênero Masculino") +
scale_fill_brewer(palette = "Blues")Conforme a tabela e os gráficos, para os dois gêneros, a faixa etária que mais assistiu pelo menos um filme da franquia foi, novamente, a de indivíduos com idade entre 45 e 60 anos.
3) Qual o filme mais assistido por grau de escolaridade?
base.3 <- base %>%
filter(V37 != '') %>%
group_by(Escolaridade = V37) %>%
summarise(across(matches(paste0('V',4:9)),~sum(.,na.rm=T))) %>%
suppressMessages %>%
ungroup
names(base.3)[-1] <- c('I - A ameaça fantasma','II - O ataque dos clones','III - A vingança dos Sith','IV - Uma nova esperança','V - O império contra-ataca','VI - O retorno de Jedi')
kable(base.3, caption = "Audiência dos filmes por escolaridade")| Escolaridade | I - A ameaça fantasma | II - O ataque dos clones | III - A vingança dos Sith | IV - Uma nova esperança | V - O império contra-ataca | VI - O retorno de Jedi |
|---|---|---|---|---|---|---|
| Bachelor degree | 206 | 170 | 163 | 195 | 243 | 234 |
| Graduate degree | 179 | 149 | 139 | 163 | 207 | 201 |
| High school degree | 57 | 48 | 48 | 53 | 61 | 60 |
| Less than high school degree | 3 | 3 | 3 | 3 | 3 | 3 |
| Some college or Associate degree | 211 | 186 | 183 | 180 | 227 | 223 |
resp.3 <- base.3 %>%
pivot_longer(cols = -1,names_to = 'Filme mais assistido',values_to = 'Audiência') %>%
group_by(Escolaridade) %>%
filter(Audiência == max(Audiência)) %>%
mutate(Contagem = n()) %>%
mutate(`Filme mais assistido` = ifelse(Contagem > 1,'Todos com a mesma audiência',`Filme mais assistido`)) %>%
select(-Contagem) %>%
ungroup %>%
distinct
kable(resp.3, caption = "Filmes mais assistidos por escolaridade")| Escolaridade | Filme mais assistido | Audiência |
|---|---|---|
| Bachelor degree | V - O império contra-ataca | 243 |
| Graduate degree | V - O império contra-ataca | 207 |
| High school degree | V - O império contra-ataca | 61 |
| Less than high school degree | Todos com a mesma audiência | 3 |
| Some college or Associate degree | V - O império contra-ataca | 227 |
excecao <- table(resp.3$`Filme mais assistido`)
regra <- names(excecao[which(excecao!=1)])
nome.excecao <- names(excecao[which(excecao==1)])
grau.dif <- resp.3$Escolaridade[which(resp.3$`Filme mais assistido` == nome.excecao)] Na primeira tabela encontram-se as audiências de cada um dos filmes para cada um dos graus escolaridades.
Na segunda encontra-se o filme mais assistido e sua respectiva audiência para cada grau de escolaridade. Nesta é possível verificar que há um filme mais assistido (Star Wars Episódio V - O império contra-ataca) para todos os graus de escolaridade, excetuando-se Less than high school degree, pois este possui audiências iguais para todos os filmes.
Esse resultado mostra que indivíduos de praticamente todas as escolaridades tiveram acesso ao filme da franquia com a melhor avaliação do público no Internet Movie Database (IMDb).
4) Em relação aos personagens:
4.1) Qual é visto de forma mais favorável?
personagens <- read_xlsx(path = "personagens.xlsx",sheet = 1)
base.4.1 <- base %>%
select(V16:V29)
names(base.4.1) <- personagens$Nome
very.favorably <- base.4.1 %>%
pivot_longer(cols = everything(),names_to = 'Personagem',values_to = 'Opiniao') %>%
filter(Opiniao == 'Very favorably') %>%
count(Personagem) %>%
rename(`Frequência de Very Favorably` = `n`) %>%
arrange(match(Personagem,personagens$Nome))
favoravel <- very.favorably %>%
filter(`Frequência de Very Favorably` == max(`Frequência de Very Favorably`) )
resposta.4.1 <- favoravel$Personagem
kable(arrange(very.favorably,desc(`Frequência de Very Favorably`)),
caption = "Frequências decrescentes de Very Favorably por personagem")| Personagem | Frequência de Very Favorably |
|---|---|
| Han Solo | 610 |
| Yoda | 605 |
| Obi-Wan Kenobi | 591 |
| R2D2 | 562 |
| Luke Skywalker | 552 |
| Princesa Leia | 547 |
| C3PO | 474 |
| Darth Vader | 310 |
| Anakin Skywalker | 245 |
| Padme Amidala | 168 |
| Lando Calrissian | 142 |
| Boba Fett | 138 |
| Jar Jar Binks | 112 |
| Imperador Palpatine | 110 |
De acordo com a tabela anterior pode-se verificar que o personagem visto de forma mais favorável é o Han Solo, o que já era esperado, visto que ele é o “queridinho da galera”, bem conhecido por seu jeito ousado, bem-humorado e debochado (no melhor sentido da palavra).
4.2) Qual é visto de forma menos favorável?
base.4.2 <- base.4.1
very.unfavorably <- base.4.2 %>%
pivot_longer(cols = everything(),names_to = 'Personagem',values_to = 'Opiniao') %>%
filter(Opiniao == 'Very unfavorably') %>%
count(Personagem) %>%
rename(`Frequência de Very Unfavorably` = `n`) %>%
arrange(match(Personagem,personagens$Nome))
desfavoravel <- very.unfavorably %>%
filter(`Frequência de Very Unfavorably` == max(`Frequência de Very Unfavorably`) )
resposta.4.2 <- desfavoravel$Personagem
kable(arrange(very.unfavorably,desc(`Frequência de Very Unfavorably`)),
caption = "Frequências decrescentes de Very Unfavorably por personagem")| Personagem | Frequência de Very Unfavorably |
|---|---|
| Jar Jar Binks | 204 |
| Darth Vader | 149 |
| Imperador Palpatine | 124 |
| Boba Fett | 45 |
| Anakin Skywalker | 39 |
| Padme Amidala | 34 |
| Lando Calrissian | 8 |
| Yoda | 8 |
| Obi-Wan Kenobi | 7 |
| C3PO | 7 |
| Princesa Leia | 6 |
| R2D2 | 6 |
| Luke Skywalker | 3 |
| Han Solo | 1 |
Pela tabela acima pode-se verificar que o personagem visto de forma mais desfavorável é o Jar Jar Binks. Essa resposta faz sentido, pois tal personagem é um baita trapalhão, não é mesmo? Apesar disso, ele é bem intencionado, muito engraçado e, por isso, dá um toque humorístico bem bacana aos filmes.
5) Considerando os fãs de Star Trek:
5.1) Qual a proporção conhece o Universo Expandido?
base.5.1 <- base %>% filter(V33=="Yes") %>% select(V31)
base.5.1 <- as.data.frame(table(base.5.1))
levels(base.5.1[,1])[1] <- "Não respondido"
names(base.5.1) <- c("Familiarizado com o U.E.","Frequência")
base.5.1 <- base.5.1 %>%
mutate("Percentual" = round(100*Frequência/sum(Frequência),1)) %>%
arrange(desc(Percentual))
resposta.5.1 <- percent(base.5.1$Percentual[ which( base.5.1[,1]=="Yes" )]/100,accuracy = 1)
kable(base.5.1,caption = "Frequências decrescentes dos indivíduos por familiarização com o Universo Expandido")| Familiarizado com o U.E. | Frequência | Percentual |
|---|---|---|
| No | 274 | 64.2 |
| Yes | 141 | 33.0 |
| Não respondido | 12 | 2.8 |
A tabela mostra que 33% dos fãs de Star Trek afirmam estar familiarizados com o Universo Expandido. Esse resultado deve fazer algum sentido, pois eu mesmo estou entre os 64% que não conhecem o Universo Expandido!
5.2) Qual a proporção de fãs do Universo Expandido?
base.5.2 <- base %>%
filter(V33=="Yes") %>%
select(V32) %>%
table %>%
as.data.frame
# base.5.2 <- as.data.frame(table(base.5.2))
levels(base.5.2[,1])[1] <- "Não respondido"
names(base.5.2) <- c("Familiarizado com o U.E.","Frequência")
base.5.2 <- base.5.2 %>%
mutate(Percentual = Frequência %>% divide_by(Frequência %>% sum(.,na.rm=T)) %>% multiply_by(100) %>% round(.,1)) %>%
arrange(desc(Percentual))
resposta.5.2 <- percent(base.5.2$Percentual[ which( base.5.2[,1]=="Yes" )]/100,accuracy = 0.1)
kable(base.5.2,caption = "Frequências decrescentes dos indivíduos considerando se são fãs do Universo Expandido")| Familiarizado com o U.E. | Frequência | Percentual |
|---|---|---|
| Não respondido | 286 | 67.0 |
| Yes | 72 | 16.9 |
| No | 69 | 16.2 |
A tabela mostra que 16.9% dos fãs de Star Trek também afirmaram ser fãs do Universo Expandido. Um percentual bem baixo, do qual eu não faço parte.
E você? Conhecia o Universo Expandido? Se sim, é fã dele?
6) Conclusão
Infelizmente chegamos ao fim da nossa jornada interestelar
de estatística pelo universo Star Wars!
Muito obrigado a você que nos acompanhou até aqui!
Se você gostou, favor não hesitar e um feedback me enviar (à la Yoda!) para o e-mail marcossam2011@hotmail.com.
Críticas construtivas e sugestões também serão super bem-vindas!
Que a força esteja com você, jovem Padawan!!!
Até a próxima!!!